\documentclass{beamer}%handout
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage{fancyvrb}  
\usepackage{color}
\usepackage{graphicx}
\expandafter\def\expandafter\insertshorttitle\expandafter{%
\insertshorttitle\hfill%
\insertframenumber\,/\,\inserttotalframenumber}

\usetheme{Warsaw}

\title{Plugin Eclipse pour la modélisation graphique}
\subtitle{Master 2 CODES -- Projet semestriel}

\author{IBRAHIMLI Nihat \& COUPEY Julien}

\date{Jeudi 6 février 2014}

\AtBeginSection[]
{
  \begin{frame}
    \frametitle{Table des matières}
    \tableofcontents[currentsection, hideothersubsections]
  \end{frame}
}

\begin{document}

\frame{\titlepage}

\begin{frame}
  \frametitle{Table des matières}
  \tableofcontents[hideallsubsections]
\end{frame}

\section{Présentation du projet}

\subsection{GAMA, modélisation et simulation}

\begin{frame}{Présentation de la plate-forme GAMA}	
	\begin{block}{Caractéristiques de GAMA}
	\begin{itemize}
	      \item Plate-forme de modélisation-simulation agent.
	      \item Développée par l’institut IRD/UPMC.
	      \item Langage de modélisation : GAML.
	      \item Basée sur Eclipse.
	\end{itemize}
	\end{block}
	\pause
	\begin{block}{Perspectives principales de GAMA} 
      	\begin{itemize}
	      \item Perspective de modélisation (perspective par défaut).
	      \item Perspective de simulation.
	\end{itemize}
	\end{block}
\end{frame}  

\begin{frame}{Perspective de modélisation} 
 	\begin{figure}
	   \centering
	  \includegraphics[scale=.23]{img/pers-model.jpg}    
	\end{figure}
\end{frame} 
\begin{frame}{Perspective de simulation} 
 	\begin{figure}
	   \centering
           \includegraphics[scale=.23]{img/pers-sim.jpg}
	\end{figure}
\end{frame} 

\subsection{Objectifs du projet}

\begin{frame}{Objectifs du projet}
  \begin{block}{Objectifs}
    \begin{itemize}
    \item Construire un outil de modélisation graphique.
    \item Sous forme de plugin Eclipse.
    \item L'intégrer à GAMA.
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Plan de travail}
    \begin{itemize}
    \item Étudier le fonctionnement des plugins d'Eclipse.
    \item Construire dans un plugin un outil de modélisation adapté.
    \item Réaliser l'intégration de notre plugin.
    \end{itemize}
  \end{block}
\end{frame}

\section{Recherches préliminaires}

\subsection{Création et configuration d'un plugin Eclipse}

\begin{frame}{Création et configuration d'un plugin Eclipse}
		\begin{block}{Qu'est-ce qu'un plugin Eclipse ?}
			\begin{itemize}
			\item Développement d'un plugin Eclipse.
			\item Application Eclipse RCP.
			\end{itemize}
		\end{block}
		\pause
		\begin{block}{Comment créer un plugin Eclipse ?}
		\begin{itemize} 
		\item<1-> Pour la création d'un plugin Eclipse :
		\texttt{File/New/Other/Plug-in Development/Plug-in Project}
		\item<3-> Sélection d'un template prédéfinie :
		 \begin{itemize}
		   \item<3-> Hello RCP ;
		    \item<3-> RCP Mail Template.
		   \end{itemize}
		\item<3-> Lancement de l'application depuis le fichier \texttt{plugin.xml}.
		\end{itemize}
	\end{block}  	
\end{frame}

\subsection{Perspectives, vues}

\begin{frame}{Utiliser des perspectives et des vues personnalisées}
  \begin{block}{Création et configuration d'une perspective}
    \begin{itemize}
    \item<1-> Workbench (plan de travail) composé de perspectives.
    \item<1-> Perspective contenant des vues et des éditeurs.
    \item<2-> Ajout d'une perspective dans l'extension.
    \item<2-> Définition d'une perspective par le package \texttt{org.eclipse.ui.perspectives}.
	\item<3-> Configuration des paramètres obligatoires :
	 \begin{itemize}
	  \item<3-> id ;
	  \item<3-> name ;
	  \item<3-> class.
	\end{itemize}
    \end{itemize}  
  \end{block}
  \end{frame}
  \begin{frame}{Définition et intégration d'une vue}
	\begin{block}{Définir une vue}
	\begin{itemize}
	  \item<1-> Visualisation et sélection des éléments.
	  \item<2-> Définition d'une vue par le package
	  \texttt{org.eclipse.ui.views}.
	  \item<2-> Configuration des paramètres \texttt{id}, \texttt{name},
	  \texttt{class}.
	  \item<3-> Lier une vue à une perspective.
	  \item<3-> Définir l'extension \texttt{perspectiveExtensions}. 	  
	\end{itemize}	
	\end{block}
	
  \end{frame}

\section{Choix d'un outil de modélisation}

\subsection{Pourquoi choisir un outil existant ?}

\begin{frame}{Pourquoi choisir un outil existant ?}
  \begin{block}{Simplicité}
    \begin{itemize}
    \item Pourquoi pas ? Plusieurs outils existent déjà.
    \item Plus facile et plus efficace.
    \item Outil fonctionnel et éprouvé.
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Intégration}
    \begin{itemize}
    \item Des outils existent au sein du projet Eclipse.
    \item Mise à disposition d'outils sous forme de plugins réutilisables.
    \item Personnalisation possible.
    \end{itemize}
  \end{block}  
\end{frame}

\subsection{EMF ou Papyrus ?}

\begin{frame}{Avantages respectifs}
  \begin{columns}[c]
    \column{.5\textwidth}
    \begin{block}{Eclipse Modeling Framework}
      \begin{itemize}
      \item Projet Eclipse de longue date.
      \item Maturité du framework.
      \item Existence de nombreux outils complémentaires dans EMF.
      \item Utilisation très répandue dans le domaine de la modélisation.
      \end{itemize}
    \end{block}
    
    \column{.5\textwidth}
    \begin{block}{Papyrus}
      \begin{itemize}
      \item Simplicité de l'installation.
      \item Bonne qualité de rendu de l'outil graphique.
      \item Outil de modélisation graphique simple et intuitif.
      \item Outils spécifiques personnalisables.
      \end{itemize}
    \end{block}
  \end{columns}
\end{frame}

\begin{frame}{Inconvénients respectifs}
  \begin{columns}[c]
    \column{.5\textwidth}
    \begin{block}{Eclipse Modeling Framework}
      \begin{itemize}
      \item Moins facile à installer que Papyrus.
      \item Lourdeur d'utilisation de l'outil graphique.
      \item Prise en main plus difficile pour l'utilisateur.
      \end{itemize}
    \end{block}
    
    \column{.5\textwidth}
    \begin{block}{Papyrus}
      \begin{itemize}
      \item Semble moins largement répandu.
      \item Plus grande difficulté à trouver des exemples et de la documentation.
      \end{itemize}
    \end{block}
  \end{columns}
\end{frame}

\section{Construction d'un plugin pour la modélisation graphique}

\subsection{Méta-modèle et palette personnalisée}

\begin{frame}{Méta-modèle et palette personnalisée 1/2}
  \begin{block}{Méta-modèle}
    \begin{itemize}
    \item Implémentation dans Papyrus.
    \item Permet de définir les stéréotypes.
    \item Tous les éléments héritent du stéréotype \texttt{metaclass} d'UML.
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Palette personnalisée}
    \begin{itemize}
    \item Construite avec l'outil de personnalisation de Papyrus.
    \item La palette est décrite dans un fichier XML.
    \end{itemize}
  \end{block}
  \pause
  \begin{alertblock}{Difficultés rencontrées}
    \begin{itemize}
    \item Difficultés pour intégrer le \og profil\fg~défini par le méta-modèle dans la palette.
    \end{itemize}
  \end{alertblock}
\end{frame}

\subsection{Configuration du plugin}

\begin{frame}{Configuration du plugin}
	
\begin{block}{Processus de génération du méta-modèle}
  	\begin{itemize}
  	\item<1-> Génération du méta-modèle.
  	\item<1-> Fichier \texttt{.genmodel}. 
  	\item<2-> Génération des classes java pour chaque stéréotype :
  	\begin{itemize}
  	  \item<2-> AgentType ;
  	  \item<2-> Arc ;
  	  \item<2-> etc.
	\end{itemize} 
	\end{itemize}
  \end{block}
  \pause\pause
  \begin{block}{Définition des dépendances}
  	\begin{itemize}
  	\item Ajout des dépendances suivantes :
  	  \begin{itemize}
  	  \item \texttt{org.eclipse.emf.ecore} ;
  	  \item \texttt{papyrus.diagram.common} ;
  	  \item \texttt{org.eclipse.papyrus.extensionpoints.uml2}.  	    	   
  	\end{itemize} 
  	\end{itemize}
  \end{block}  
\end{frame}

\begin{frame}{Configuration du plugin}
\begin{block}{Définition des extensions}
  	\begin{itemize}
  	  \item Ajout des extensions suivantes :
  	\begin{itemize}
  	  \item \texttt{org.eclipse.emf.ecore.generated\_package} (définition du
  	  modèle généré).
  	  \item \texttt{org.eclipse.emf.ecore.uri\_mapping} (définition du
  	  méta-modèle).
  	  \item \texttt{org.eclipse.papyrus.diagram.common.palette} 
  	  (définition de la palette).
  	\end{itemize}
  	\end{itemize} 
  \end{block}
\end{frame}

\begin{frame}{Méta-modèle et palette personnalisée 2/2}
  \begin{columns}[c]
    \column{.75\textwidth}
    \noindent \includegraphics[scale=.25]{img/metamodelepapyrus.png}
    \column{.25\textwidth}
    \includegraphics[scale=.3]{img/palette.png}
  \end{columns}
\end{frame}

\section{Intégration dans GAMA}

\subsection{Difficultés rencontrées}

\begin{frame}{Difficultés rencontrées}
  \begin{block}{Dépendances au niveau de GAMA}
    \begin{itemize}
    \item Ajout dans le plugin principal de GAMA (\texttt{msi.gama.application}) :
      \begin{itemize}
      \item de notre plugin ;
      \item des outils Papyrus. 
      \end{itemize}
    \item Utiliser une perspective Papyrus ne permet pas d'accéder à la palette personnalisée.
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Besoins supplémentaires}
    \begin{itemize}
    \item Notre plugin doit fournir lui-même la perspective de modélisation graphique.
    \item Utilisation d'un mécanisme de GAMA qui permet de \og scanner\fg~les perspectives dédiées dans ses dépendances.
    \end{itemize}
  \end{block}
\end{frame}

\subsection{Intégration d'une perspective personnalisée}

\begin{frame}{Intégration d'une perspective personnalisée}
  \begin{block}{Définition des composants de la perspective personnalisée}
	  \begin{itemize}
	    \item Project Explorer View - la vue d'explorer de projet ;
	    \item Model Explorer View - la vue d'explorer de modèle ;
	    \item PropertySheet View - la vue propriétés ;
	    \item Palette View - la vue de la palette ;
	    \item Content Outline View - la vue de résumé.
	  \end{itemize}
  \end{block}
  \pause
  \begin{block}{Définition de la perspective personnalisée}
  \begin{itemize}
    \item Définit son \texttt{id} : \texttt{msi.gama.GraphicalModelingPerspective}.
    \item Ajout de l'extension \texttt{perspectiveExtension}.
    \item Intégration des vues définies ci-dessus.
  \end{itemize}
  \end{block}
\end{frame}
\begin{frame}{Perspective personnalisée} 
 	\begin{figure}
	   \centering
	  \includegraphics[scale=.35]{img/pers-perso.jpg}    
	\end{figure}
\end{frame}
\subsection{Démo} 
\begin{frame}{Démo} 
  \begin{block}{Démo}
    Exemple d'utilisation de notre outil sur un modèle construit dans GAMA.
  \end{block}
\end{frame} 

\section{Conclusion}

\begin{frame}{Conclusion 1/2}
  \begin{block}{Par rapport aux objectifs}
    \begin{itemize}
    \item Construction d'un plugin fournissant un outil de modélisation graphique adapté.
    \item Intégration de notre plugin dans GAMA
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Perspectives}
    \begin{itemize}
    \item Créer un \textit{parser} pour générer automatiquement le modèle utilisable par GAMA.
    \item Éventuellement intégrer l'outil final dans la version de développement de GAMA.
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}{Conclusion 2/2}
  \begin{block}{Bilan personnel}
    \begin{itemize}
    \item Projet assez technique.
    \item Découverte et interfaçage de plusieurs outils.
    \item Personnalisation et intégration d'outils.
    \item Travail sur les sources d'un projet important déjà existant.
    \item Approfondissement de notre connaissance du framework d'Eclipse :
      \begin{itemize}
      \item plugins ;
      \item perspectives, vues ;
      \item logiciels basés sur Eclipse (RCP) ;
      \item enrichissement de logiciel existant.
      \end{itemize}
    \end{itemize}
  \end{block}
   
\end{frame}

\begin{frame}{Questions}
  \begin{block}{Cette présentation est terminée}
    \begin{itemize}
    \item Merci de votre attention.
    \item Avez-vous des questions ?
    \end{itemize}
  \end{block}
\end{frame}

\end{document}
